﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Text;
using System.Threading.Tasks;
using WebApiClientCore.Attributes;
using WebApiClientCore.Parameters;
using XUCore.WeChat.Apis;

namespace XUCore.WeChat.Enterprise.Apis.Media
{
    /// <summary>
    /// 素材管理
    /// </summary>
    [HttpHost("https://qyapi.weixin.qq.com/cgi-bin/media/")]
    public interface IEnterpriseMediaApi : IEnterpriseWeChatApiWithAccessTokenFilter
    {
        // /// <summary>
        // /// 新增临时素材
        // /// </summary>
        // /// <param name="access_token"></param>
        // /// <param name="type">
        // /// 图片（image）: 10M，支持JPG,PNG格式
        // /// 语音（voice）：2M，播放长度不超过60s，仅支持AMR格式
        // /// 视频（video）：10MB，支持MP4格式
        // /// 普通文件（file）：20MB
        // /// </param>
        // /// <param name="media"></param>
        // /// <returns></returns>
        // [HttpPost("upload")]
        // Task<EnterpriseUploadApiResult> UploadAsync([Required] string access_token, [Required] string type, [Required] FormDataFile media);
        /// <summary>
        /// 新增临时素材
        /// </summary>
        /// <param name="type">
        /// 图片（image）: 10M，支持JPG,PNG格式
        /// 语音（voice）：2M，播放长度不超过60s，仅支持AMR格式
        /// 视频（video）：10MB，支持MP4格式
        /// 普通文件（file）：20MB
        /// </param>
        /// <param name="media"></param>
        /// <returns></returns>
        [HttpPost("upload")]
        Task<EnterpriseUploadApiResult> UploadAsync([Required] string type, [Required] FormDataFile media);
        // /// <summary>
        // /// 新增临时素材，图片文件大小应在 5B ~ 2MB 之间
        // /// </summary>
        // /// <param name="access_token"></param>
        // /// <param name="media"></param>
        // /// <returns></returns>
        // [HttpPost("uploadimg")]
        // Task<EnterpriseUploadImageApiResult> UploadImageAsync([Required] string access_token, [Required] FormDataFile media);
        /// <summary>
        /// 新增临时素材，图片文件大小应在 5B ~ 2MB 之间
        /// </summary>
        /// <param name="media"></param>
        /// <returns></returns>
        [HttpPost("uploadimg")]
        Task<EnterpriseUploadImageApiResult> UploadImageAsync([Required] FormDataFile media);
        // /// <summary>
        // /// 上传附件资源<para/>
        // /// 所有文件size必须大于5个字节<para/>
        // /// 图片（image）：10MB，支持JPG,PNG格式。朋友圈类型图片，长边不超过10800像素，短边不超过1080像素。<para/>
        // /// 视频（video） ：10MB，支持MP4格式。朋友圈类型视频时长不超过30秒<para/>
        // /// 文件（file） ：10MB<para/>
        // /// 注：目前 商品图册只支持图片类型； 朋友圈只支持图片、视频类型<para/>
        // /// <see href="https://developer.work.weixin.qq.com/document/path/95098"/>
        // /// </summary>
        // /// <param name="access_token"></param>
        // /// <param name="media_type">媒体文件类型，分别有图片（image）、视频（video）、普通文件（file）</param>
        // /// <param name="attachment_type">
        // ///     附件类型，不同的附件类型用于不同的场景。1：朋友圈；2:商品图册<para/>
        // ///     注：朋友圈附件类型：如果是客户端jsapi或者小程序接口使用，仅支持企业微信客户端版本在4.0.2及以上版本使用。不然可能显示异常。
        // /// </param>
        // /// <param name="media"></param>
        // /// <returns></returns>
        // [HttpPost("upload_attachment")]
        // Task<EnterpriseUploadImageApiResult> UploadAttachmentAsync([Required] string access_token, [Required] string media_type, [Required] int attachment_type, [Required] FormDataFile media);
        /// <summary>
        /// 上传附件资源<para/>
        /// 所有文件size必须大于5个字节<para/>
        /// 图片（image）：10MB，支持JPG,PNG格式。朋友圈类型图片，长边不超过10800像素，短边不超过1080像素。<para/>
        /// 视频（video） ：10MB，支持MP4格式。朋友圈类型视频时长不超过30秒<para/>
        /// 文件（file） ：10MB<para/>
        /// 注：目前 商品图册只支持图片类型； 朋友圈只支持图片、视频类型<para/>
        /// <see href="https://developer.work.weixin.qq.com/document/path/95098"/>
        /// </summary>
        /// <param name="media_type">媒体文件类型，分别有图片（image）、视频（video）、普通文件（file）</param>
        /// <param name="attachment_type">
        ///     附件类型，不同的附件类型用于不同的场景。1：朋友圈；2:商品图册<para/>
        ///     注：朋友圈附件类型：如果是客户端jsapi或者小程序接口使用，仅支持企业微信客户端版本在4.0.2及以上版本使用。不然可能显示异常。
        /// </param>
        /// <param name="media"></param>
        /// <returns></returns>
        [HttpPost("upload_attachment")]
        Task<EnterpriseUploadImageApiResult> UploadAttachmentAsync([Required] string media_type, [Required] int attachment_type, [Required] FormDataFile media);
    }
}